﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using IBM.Data.DB2.iSeries;
using System.Data;

namespace Unimaq.FacturaDBS_Spring.ADO.Version2.DBS
{
    public class DBS_CabeceraADO
    {
        public List<Entidades.Version2.DBS.DBS_Cabecera> Listar_AS400(Util.ContextoDBAS400 ctx, DateTime fechaEmisionInicio, DateTime fechaEmisionFin)
        {
            iDB2Command cmd =
                 new iDB2Command(
                    string.Format(
                        "SELECT * FROM LIBR09.UFPFAHD0 WHERE (FECEMI >= '{0}' AND FECEMI <= '{1}') AND (SUNPRE <> 0 AND SUNNUM <> 0) ",
                        fechaEmisionInicio.ToString("yyyyMMdd"),
                        fechaEmisionFin.ToString("yyyyMMdd")),
                        ctx.GetConexion(), ctx.GetTx());

            DataTable dtResult = new DataTable();
            dtResult.Load(cmd.ExecuteReader());

            List<Entidades.Version2.DBS.DBS_Cabecera> lista = new List<Entidades.Version2.DBS.DBS_Cabecera>();

            foreach (DataRow fila in dtResult.Rows)
            {
                Entidades.Version2.DBS.DBS_Cabecera dbs_Cabecera = new Entidades.Version2.DBS.DBS_Cabecera();

                dbs_Cabecera.Tipreg = fila["TIPREG"].ToString();
                dbs_Cabecera.Corp = !(fila["CORP"] is DBNull) ? decimal.Parse(fila["CORP"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cia = !(fila["CIA"] is DBNull) ? decimal.Parse(fila["CIA"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Ofic = !(fila["OFIC"] is DBNull) ? decimal.Parse(fila["OFIC"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Anodoc = !(fila["ANODOC"] is DBNull) ? decimal.Parse(fila["ANODOC"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Tipdoc = fila["TIPDOC"].ToString();
                dbs_Cabecera.Numori = fila["NUMORI"].ToString();
                dbs_Cabecera.Numpag = !(fila["NUMPAG"] is DBNull) ? decimal.Parse(fila["NUMPAG"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Inddre = fila["INDDRE"].ToString();
                dbs_Cabecera.Numdre = fila["NUMDRE"].ToString();
                dbs_Cabecera.Tipcta = fila["TIPCTA"].ToString();
                dbs_Cabecera.Codcli = fila["CODCLI"].ToString();
                dbs_Cabecera.Oficli = !(fila["OFICLI"] is DBNull) ? decimal.Parse(fila["OFICLI"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Tipruc = fila["TIPRUC"].ToString();
                dbs_Cabecera.Numruc = fila["NUMRUC"].ToString();
                dbs_Cabecera.Suntip = fila["SUNTIP"].ToString();
                dbs_Cabecera.Sunpre = !(fila["SUNPRE"] is DBNull) ? decimal.Parse(fila["SUNPRE"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Sunnum = !(fila["SUNNUM"] is DBNull) ? decimal.Parse(fila["SUNNUM"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Rsocia = fila["RSOCIA"].ToString();
                dbs_Cabecera.Direcc = fila["DIRECC"].ToString();
                dbs_Cabecera.Locali = fila["LOCALI"].ToString();
                dbs_Cabecera.Moneda = fila["MONEDA"].ToString();
                dbs_Cabecera.Percon = !(fila["PERCON"] is DBNull) ? decimal.Parse(fila["PERCON"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Fecemi = fila["FECEMI"].ToString();
                dbs_Cabecera.Cencos = fila["CENCOS"].ToString();
                dbs_Cabecera.Divdbs = fila["DIVDBS"].ToString();
                dbs_Cabecera.Lindbs = fila["LINDBS"].ToString();
                dbs_Cabecera.Divisi = !(fila["DIVISI"] is DBNull) ? decimal.Parse(fila["DIVISI"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Linvig = fila["LINVIG"].ToString();
                dbs_Cabecera.Tipcam = !(fila["TIPCAM"] is DBNull) ? decimal.Parse(fila["TIPCAM"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas1 = fila["TIPAS1"].ToString();
                dbs_Cabecera.Ofico1 = !(fila["OFICO1"] is DBNull) ? decimal.Parse(fila["OFICO1"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco1 = fila["CENCO1"].ToString();
                dbs_Cabecera.Ecode1 = fila["ECODE1"].ToString();
                dbs_Cabecera.Vavta1 = !(fila["VAVTA1"] is DBNull) ? decimal.Parse(fila["VAVTA1"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas2 = fila["TIPAS2"].ToString();
                dbs_Cabecera.Ofico2 = !(fila["OFICO2"] is DBNull) ? decimal.Parse(fila["OFICO2"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco2 = fila["CENCO2"].ToString();
                dbs_Cabecera.Ecode2 = fila["ECODE2"].ToString();
                dbs_Cabecera.Vavta2 = !(fila["VAVTA2"] is DBNull) ? decimal.Parse(fila["VAVTA2"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas3 = fila["TIPAS3"].ToString();
                dbs_Cabecera.Ofico3 = !(fila["OFICO3"] is DBNull) ? decimal.Parse(fila["OFICO3"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco3 = fila["CENCO3"].ToString();
                dbs_Cabecera.Ecode3 = fila["ECODE3"].ToString();
                dbs_Cabecera.Vavta3 = !(fila["VAVTA3"] is DBNull) ? decimal.Parse(fila["VAVTA3"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas4 = fila["TIPAS4"].ToString();
                dbs_Cabecera.Ofico4 = !(fila["OFICO4"] is DBNull) ? decimal.Parse(fila["OFICO4"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco4 = fila["CENCO4"].ToString();
                dbs_Cabecera.Ecode4 = fila["ECODE4"].ToString();
                dbs_Cabecera.Vavta4 = !(fila["VAVTA4"] is DBNull) ? decimal.Parse(fila["VAVTA4"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas5 = fila["TIPAS5"].ToString();
                dbs_Cabecera.Ofico5 = !(fila["OFICO5"] is DBNull) ? decimal.Parse(fila["OFICO5"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco5 = fila["CENCO5"].ToString();
                dbs_Cabecera.Ecode5 = fila["ECODE5"].ToString();
                dbs_Cabecera.Vavta5 = !(fila["VAVTA5"] is DBNull) ? decimal.Parse(fila["VAVTA5"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas16 = fila["TIPAS16"].ToString();
                dbs_Cabecera.Ofico16 = !(fila["OFICO16"] is DBNull) ? decimal.Parse(fila["OFICO16"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco16 = fila["CENCO16"].ToString();
                dbs_Cabecera.Ecode16 = fila["ECODE16"].ToString();
                dbs_Cabecera.Tasim16 = !(fila["TASIM16"] is DBNull) ? decimal.Parse(fila["TASIM16"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Valex16 = !(fila["VALEX16"] is DBNull) ? decimal.Parse(fila["VALEX16"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Valaf16 = !(fila["VALAF16"] is DBNull) ? decimal.Parse(fila["VALAF16"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Impor16 = !(fila["IMPOR16"] is DBNull) ? decimal.Parse(fila["IMPOR16"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas20 = fila["TIPAS20"].ToString();
                dbs_Cabecera.Ofico20 = !(fila["OFICO20"] is DBNull) ? decimal.Parse(fila["OFICO20"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco20 = fila["CENCO20"].ToString();
                dbs_Cabecera.Ecode20 = fila["ECODE20"].ToString();
                dbs_Cabecera.Tasim20 = !(fila["TASIM20"] is DBNull) ? decimal.Parse(fila["TASIM20"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Valaf20 = !(fila["VALAF20"] is DBNull) ? decimal.Parse(fila["VALAF20"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Impor20 = !(fila["IMPOR20"] is DBNull) ? decimal.Parse(fila["IMPOR20"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Tipas21 = fila["TIPAS21"].ToString();
                dbs_Cabecera.Ofico21 = !(fila["OFICO21"] is DBNull) ? decimal.Parse(fila["OFICO21"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Cenco21 = fila["CENCO21"].ToString();
                dbs_Cabecera.Ecode21 = fila["ECODE21"].ToString();
                dbs_Cabecera.Impor21 = !(fila["IMPOR21"] is DBNull) ? decimal.Parse(fila["IMPOR21"].ToString()) : new Nullable<decimal>();

                dbs_Cabecera.Sistema = fila["SISTEMA"].ToString();
                dbs_Cabecera.Cif = fila["CIF"].ToString();
                dbs_Cabecera.Margcif = !(fila["MARGCIF"] is DBNull) ? decimal.Parse(fila["MARGCIF"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Vtapad = fila["VTAPAD"].ToString();
                dbs_Cabecera.Vvtpad = !(fila["VVTPAD"] is DBNull) ? decimal.Parse(fila["VVTPAD"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Orden = fila["ORDEN"].ToString();
                dbs_Cabecera.Textom = fila["TEXTOM"].ToString();
                dbs_Cabecera.Textoa = fila["TEXTOA"].ToString();

                dbs_Cabecera.Notasn = fila["NOTASN"].ToString();
                dbs_Cabecera.Tipnot = fila["TIPNOT"].ToString();
                dbs_Cabecera.Refnot = fila["REFNOT"].ToString();
                dbs_Cabecera.Alquil = fila["ALQUIL"].ToString();
                dbs_Cabecera.Horsem = !(fila["HORSEM"] is DBNull) ? decimal.Parse(fila["HORSEM"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Facred = fila["FACRED"].ToString();
                dbs_Cabecera.Forgas = fila["FORGAS"].ToString();
                dbs_Cabecera.Cliad = fila["CLIAD"].ToString();
                dbs_Cabecera.Liqui = fila["LIQUI"].ToString();
                dbs_Cabecera.Vend = fila["VEND"].ToString();
                dbs_Cabecera.Vends = fila["VENDS"].ToString();
                dbs_Cabecera.Clase = fila["CLASE"].ToString();
                dbs_Cabecera.Indexo = fila["INDEXO"].ToString();
                dbs_Cabecera.Indlib = fila["INDLIB"].ToString();
                dbs_Cabecera.Indsit = fila["INDSIT"].ToString();
                dbs_Cabecera.Tipform = fila["TIPFORM"].ToString();
                dbs_Cabecera.Colaimp = fila["COLAIMP"].ToString();
                dbs_Cabecera.Achocar = !(fila["ACHOCAR"] is DBNull) ? decimal.Parse(fila["ACHOCAR"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Indgen = fila["INDGEN"].ToString();
                dbs_Cabecera.Libre = fila["LIBRE"].ToString();
                dbs_Cabecera.Fecinic = fila["FECINC"].ToString();
                dbs_Cabecera.Horinc = !(fila["HORINC"] is DBNull) ? decimal.Parse(fila["HORINC"].ToString()) : new Nullable<decimal>();
                dbs_Cabecera.Usuinc = fila["USUINC"].ToString();
                dbs_Cabecera.Terinc = fila["TERINC"].ToString();

                lista.Add(dbs_Cabecera);
            }

            return lista;
        }
    }
}
